#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git commit" with no arguments.  The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-commit".

if git rev-parse --verify HEAD >/dev/null 2>&1
then
	against=HEAD
else
	# Initial commit: diff against an empty tree object
	against=$(git hash-object -t tree /dev/null)
fi

# We only filter the file name with c or cpp file.
changed_files=$(git diff-index --cached $against | \
	grep -E '[MA]	.*\.(c|cpp|h)$' | cut -d'	' -f 2)

if which clang-format > /dev/null; then 
	if [ -n "$changed_files" ]; then
		echo "changed files: $changed_files"
		for file in $changed_files
		do
			clang-format -style=file -i $file
			git add $file
		done
	fi
else
    echo "clang-format isn't exist, please install clang-format 14 first."
fi
